package org.hfy.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.hfy.dto.warehouse.InventoryAdjustmentDTO;
import org.hfy.dto.warehouse.InventoryQueryDTO;
import org.hfy.entity.Inventory;

import java.util.List;

/**
 * 库存管理服务接口
 * 
 * @author hfy
 * @version 1.0
 */
public interface InventoryService extends IService<Inventory> {

    /**
     * 分页查询库存列表
     * 
     * @param queryDTO 查询条件
     * @return 库存列表
     */
    IPage<Inventory> getInventoryPage(InventoryQueryDTO queryDTO);

    /**
     * 根据厂内编号查询库存
     * 
     * @param factoryNo 厂内编号
     * @return 库存信息
     */
    Inventory getByFactoryNo(String factoryNo);

    /**
     * 库存调整
     * 
     * @param id 库存ID
     * @param adjustmentDTO 调整信息
     * @return 调整后的库存
     */
    Inventory adjustInventory(Long id, InventoryAdjustmentDTO adjustmentDTO);

    /**
     * 更新库存数量
     * 
     * @param factoryNo 厂内编号
     * @param inboundQuantity 入库数量增量
     * @param outboundQuantity 出库数量增量
     */
    void updateStockQuantity(String factoryNo, Integer inboundQuantity, Integer outboundQuantity);

    /**
     * 查询低库存物料
     * 
     * @return 低库存物料列表
     */
    List<Inventory> getLowStockItems();

    /**
     * 检查库存预警
     */
    void checkStockWarning();
} 